Network reliability is critical for online services and cloud providers. However, their networks are large, heterogeneous, complex and undergo constant chum. In such an environment, even small issues triggered by device failures, buggy device software, configuration errors, unproven management tools and unavoidable human errors can quickly cause outages. Network emulators are one way to help reduce these issues. Network emulation allow users to define network topologies and capacities. Realistic applications may then be ran over the emulated network. Current network emulations, however, do not support various features such as customized switch firmware or have on-demand scalability based on the limited size the infrastructure used to run the emulated network.